In signaling networks in which messages are transmitted over a communications link between two signaling points, an enormous number of message units must be formatted and transmitted over an appropriate communications path. In an ideal environment, all message units would be transferred immediately to the appropriate destination without error or other impediment. However, in real world data communications, limited communication resources restrict both how much data can be transmitted and the speed of data message unit transmission. Moreover, there are a number of factors that detrimentally impact the accuracy with which messages are communicated. Consequently, message units or entire messages may need to be retransmitted.
One result of these message transmission impediments is that some type of congestion may often occur at one or more points in the message transmission process. Network congestion is generally addressed in various standards, e.g., ANSI, TTC, and ITU-T. In the ITU-T recommendation Q.704, Section 3.8 sets forth criteria for determining signaling link and route congestion status.
Several different approaches exist for managing congestion. U.S. Pat. No. 5,600,798 teaches a data flow control through a frame relay network based on congestion notification. Each station connected to the network includes a station manager that examines congestion notification messages and slows down data traffic destined for congested portions of the frame relay network. U.S. Pat. No. 5,042,029 discloses a congestion and control method in a packet switched communications system. A congestion detector detects any traffic congestion and introduces the delay between receipt of an acknowledgment packet from a destination terminal and transmission of the acknowledgment packet to the source terminal. The amount of delay may be controlled based upon a priority of each acknowledging packet. U.S. Pat. No. 5,193,151 employs a congestion avoidance algorithm where each network node measures a round trip delay from when it sends data to a destination and receives an acknowledgment. Such delays are measured for various traffic load levels. A comparison of these delays is used to determine whether to increase or decrease the load level.
Consider the following example where congestion occurs during communications between first (1) and second (2) nodes connected by a communications link. Specifically, congestion occurs when node (2) fails to acknowledge receipt of messages transmitted by node (1) over the communications link. As a result, new messages presented for transmission from node (1) to node (2) accumulate in one or more transmit buffers in node (1). When the transmit buffer(s) become(s) filled to certain warning levels, congestion alarm signals are generated and sent to the control process(es), e.g., application(s), that generated the original messages to be transmitted. If the congestion condition abates, a congestion recovery message is generated and forwarded to the originating process(es) to restart the stream of messages to be transmitted over the link. This stop-and-go cycling in response to congestion alarm and congestion alarm recovery messages, referred to hereafter as "surging," may itself cause serious message handling problems further exacerbating the congestion problem.
Congestion alarm and congestion alarm recovery messages are typically intermingled with all of the other messages and other types of alarms being provided to end processes/applications at node (1). To process all of these messages in an orderly fashion, a buffer is employed configured in a first-in-first-out (FIFO) format. But in a FIFO format, the congestion related messages receive no special priority in being forwarded to the end process that acts on them. Time delays in such a buffer are particularly problematic for congestion related messages because they are time sensitive. In fact, buffering delays may be sufficiently long that by the time a congestion message actually reaches the end process, the congestion situation may have changed completely, and is therefore the action taken by the end process may be entirely inappropriate.
Thus, there is a need to promptly provide congestion related or other types of time sensitive control messages to higher level processes so that appropriate and timely action can be taken. A related problem to be solved is eliminating unnecessary or excessive stop-and-go cycling in response to buffered control messages. It would also be advantageous to prevent the buffering of redundant or otherwise irrelevant control messages.
It is a general object of the present invention to solve the above-noted problems.
It is an object of the present invention to enable prompt delivery of time sensitive control messages to control processes so that timely and relevant actions can be taken by the control process.
It is an object of the present invention to eliminate control message surging and hysteresis.
It is an object of the present invention to eliminate storage of redundant or otherwise unnecessary control messages awaiting delivery to control processes.
These and other objectives are met and the above-identified problems are solved by the present invention. The present invention provides an auto-cancelling buffer and method that ensures that time sensitive control messages are efficiently moved between control processes. In a general embodiment, one or more control messages are stored in a special buffer set aside for storing, for example, time sensitive control messages. The special buffer ensures priority transmission of the time sensitive information. A current control message is received indicating a first state and is compared with a buffered control message. If the buffered control message is in a second different state, e.g., opposite the first state, the buffered control message is removed from the buffer, and both messages are discarded.
In effect, opposing control messages are cancelled rather than stored in the buffer. This avoids surging, e.g., unnecessary cycling of an end process. For example, if the control messages include congestion alarm messages and congestion recovery messages, one of the congestion alarm and recovery messages previously stored in the buffer is automatically cancelled when the other message is received.
On the other hand, if the states of the buffered and the currently received control messages are the same, one of those messages is stored in the buffer, and the other is discarded. Consequently, redundant control messages are not stored in the buffer. In both instances just described, the number of messages in the buffer is reduced, decreasing the delivery delay for the relevant messages that remain in the buffer.
The method of the present invention may also be applied to situations where congestion alarm messages and congestion recovery messages are assigned to different priority levels. When the buffer stores a congestion alarm message for one of the priority levels, lower levels are assumed to be congested, and higher priority levels are assumed not to be congested. As a result, when a congestion recovery message is received corresponding to the one priority level, congestion alarm messages stored for the one priority level and higher are cancelled. Alternatively, when the buffer stores a congestion recovery message from one of the priority levels and a congestion alarm message is received corresponding to the one priority level, congestion recovery messages stored for the one priority level and lower are cancelled.
In accordance with the present invention, a data transmission interface includes a buffer for storing control messages, and preferably, time sensitive control messages, which can assume either a first or a second state. This control message buffer may be provided in addition to a first-in-first-out (FIFO)-type buffer that stores messages containing different information, e.g., other than time sensitive information. A controller manages control messages received for storage in the buffer. The controller cancels one of the control messages stored in the buffer having a first state when a subsequently received control message is in the second state.
In another embodiment of the present invention applicable to data communications, plural transmit buffers are provided at a transmission node. Each transmit buffer includes a corresponding priority level and stores messages having the corresponding priority level to be transmitted over a transmission link. Congestion control messages relating to a congestion status of each transmit buffer are generated. A congestion message buffer stores the congestion control messages for each transmit buffer. A controller determines the priority level and state of a new congestion message. If the determined state of the new congestion message is different than the state of a congestion message at the same determined level already stored in the congestion message buffer, the controller cancels the already stored congestion message.
When the congestion message buffer stores a congestion alarm message for one of the priority levels, lower priority levels are assumed to be congested, and higher priority levels are assumed to be not congested. When a congestion recovery message is received corresponding to the one priority level, the controller cancels congestion alarm messages stored for the one priority level and higher. When a congestion alarm message is received corresponding to one priority level, the controller cancels congestion recovery messages stored for the one priority level and lower.
These features and advantages as well as others of the present invention will be described in further detail in conjunction with the drawings below.